CAP FAQ
-------
Last update:
Fri Apr 17 14:49:04 EST 1998

munnari.OZ.AU:mac/CAP.faq


> What is CAP ?

The Columbia AppleTalk Package (CAP) implements the AppleTalk protocol
stack on a variety of UNIX machines.  The main applications provide an
AppleShare 2.1 compatible server (aufs), a LaserWriter Spooler (lwsrv)
and a program to print to LaserWriters (papif).  The latter can be used
to talk to EtherTalk LaserWriters, LocalTalk LaserWriters used on Dayna
EtherPrint cards or on a LocalTalk/EtherTalk gateway.  There are also a
number of contributed packages bundled with CAP (see cap60/contrib).

A brief CAP glossary is included at the end of this FAQ.



> What extra hardware is required for CAP ?

This depends on the type of UNIX operating system being used.

On SUN SunOS or Solaris, DEC ULTRIX or Digital UNIX, BSDI 1.1 or 2.0,
NeXT, FreeBSD 2.0 or NetBSD 1.N machines, CAP can speak Phase 2 EtherTalk
packets using packet filters based on the Stanford ENET model (NIT,
PacketFilter, DLPI) or the Berkeley Packet Filter.

On some hosts, including A/UX and Linux 1.3.9x & 2.0.0, CAP can also use
Kernel based AppleTalk.

On SunOS, Solaris, ULTRIX, Digital UNIX, IRIX, AIX, HP-UX, Linux, BSDI,
NetBSD and NEWSOS hosts, CAP can use the UNIX AppleTalk Router (UAR) to
connect to Phase 1 or Phase 2 networks.

On other UNIX boxes you need to have an external hardware gateway that can
translate AppleTalk in IP (IPTalk) packets.  Suitable candidates are Shiva
FastPath, Cayman GatorBox, Cisco Router or Webster MultiPort Gateway.



> What machines will CAP run on ?

The CAP Configure script has specific support for the following
Operating Systems:

	sunos - SUN SunOS
	solaris - SUN Solaris 2.N
	ultrixnn - DEC Ultrix 1.2, 2.0, 4.N
	osf1 - OSF/1 1.3 or greater
	irix - Silicon Graphics IRIS/IRIX
	aix - IBM AIX System V
	hpux - HP HP-UX 8.0 & 9.0
	uts - Amdahl UTS
	aux - Apple A/UX
	encore - Encore MultiMax BSD
	pyr - Pyramid (BSD Universe)
	next - NeXT/MACH
	dynix - Sequent Balance
	newsos - Sony NEWS
	drsnx - ICL DRS/NX V4.0
	epix - Control Data EP/IX
	dynix - Sequent Balance
	domainosbsd - HP/Apollo Domain BSD 4.3
	386bsd - 386/BSD, FreeBSD 1.0 and derivatives
	linux - Linux 1.3.9x, 2.x
	freebsd - FreeBSD 2.0
	netbsd - NetBSD 1.0
	bsdi - BSDI BSD/386 1.1 & 2.0
	bsd - BSD 4.2, 4.3



> What is the current CAP version ?

CAP is at version 6.0 with (currently) 198 patches to be applied, most of
which add extra functionality to the original.  To determine the current
patch level of your sources, check the cap60/README file for a line of
the form

	o CAP Distribution 6.0, Patch Level 198, June 1996

If your CAP distribution is at patch level 100, or greater, you can run
a CAP program with the -dv option and it will print the patch level, the
low level encapsulation method and exit. ie:

% atlook -dv
CAP version 6.0, patch level 195, June, 1995
Modified UDP encapsulation
%

The "Modified UDP encapsulation" indicates that the program is compiled
for use with UAR (or UAB). Other possibilities are "UDP encapsulation" for
IPTalk, "EtherTalk Phase 2 encapsulation" or "EtherTalk encapsulation" for
Native EtherTalk mode and "Kernel Based EtherTalk encapsulation" for Kernel
AppleTalk.


> Will CAP 7.0 ever appear ?

Eventually.



> Where can I get CAP ?

CAP can be obtained by anonymous FTP from
(note that there has been a name change for Rutgers)

munnari.OZ.AU		mac/{cap60.pl100.tar.Z,cap.patches/*}
ftp-ns.rutgers.EDU	pub/cap/{cap60.pl100.tar.Z,cap.patches/*}
gatekeeper.DEC.COM	pub/net/appletalk/cap/{cap60.pl100.tar.Z,cap.patches/*}
ftp.kuis.kyoto-u.AC.JP	net/cap/{cap60.pl100.tar.Z,cap60.patches/*.Z}
src.doc.ic.AC.UK	packages/multigate/{cap60.pl100.tar.Z,cap.patches/*}

Please choose an appropriate site and an off-peak time for the transfer.

The patches are available individually or as the files "patches.1-100.tar.Z",
"patches.101-126.tar.Z", "patches.127-143.tar.Z", "patches.144-154.tar.Z",
"patches.155-162.tar.Z", "patches.163-182.tar.Z" & "patches.183-192.tar.Z".
Additionally, for new users, a partially patched source file is available
as "cap60.pl100.tar.Z" (beware: the file cap60.tar.Z is totally unpatched).



> How do I apply the patches ?

To make the process of patching easier, you should get the 'patch' utility
written by Larry Wall, it is normally available from sites that archive
comp.sources.unix in volume7/patch2 and at GNU archive sites as
patch-2.1.tar.gz (which requires gzip-1.2.2.tar for unpacking).

For each of the patches, run 'patch -p < cap60.patchNNN' from the top level
cap60 directory, for example, in csh

		foreach i (cap60.patches/cap60.patch*)
		patch -p < $i >>& /tmp/patches
		end

and check the /tmp/patches file for patching errors (look for the strings
"rej", "failed", "offset", "fuzz" - should be none).  To remove the *.orig
files that patch leaves behind (containing the original version of the file),
run 'make spotless' from the top level directory (note that spotless also
removes all makefiles so gen.makes needs to be run to regenerate them).



> I picked up CAP 6.0 from rutgers.edu, but our Unix system administrator
> refuses to install it because there are 74 patches (can't say I blame him)!

Sigh. Using the patch program to apply patches requires a minimal amount of
time and energy.  Taking time to install the patch program will pay off for
CAP and other program updates.

% date
Sat Mar  7 23:51:05 EST 1992
% touch /tmp/patches
% foreach i (cap60.patches/cap60.patch*)
? patch -p < $i >>& /tmp/patches
? end
% grep rej /tmp/patches
% date
Sat Mar  7 23:54:26 EST 1992

It took just 3:11 to apply 75 patches to the raw CAP tar source.  The extra
overhead is the time to FTP 3 files, cap60.tar.Z, patches.1-74.tar.Z and
cap60.patch075 and uncompress them.  The total time spent on this ... 0:8:02.



> I'm attempting to install CAP6.0 on an UltraSPARC system running Solaris
> 2.5.1.  I've got GNU patch 2.5, but no matter what I try I can't get the
> source successfully patched.

This version of patch doesn't know what to do if the file being patched
doesn't already exist. As in, you're trying to add something new to the 
distribution. It simply asks for the file name to patch.

         ftp://munnari.OZ.AU/mac/patch-4-solaris
  
is a binary of a 'patch' program for Solaris that works with CAP patches.



> Is CAP Public Domain ?

No, CAP is distributed with the following condition on its use:

  Copyright (c) 1986, 1987, 1988, The Trustees of Columbia University in
  the City of New York.  Charlie C. Kim, User Services Group, Academic
  Information Services Division, Libraries and Center for Computing
  Activities and Bill Schilit, formerly of Computer Research Facilities,
  Computer Science Department.

  Permission is granted to any individual or institution to use, copy,
  or redistribute this software so long as it is not sold for profit,
  provided that this notice and the original copyright notices are
  retained.  Columbia University makes no representations about the
  suitability of this software for any purpose.  It is provided "as is"
  without express or implied warranty.

Some portions of CAP have other copyrights and are suitably marked.



> I've since mostly given it up as buggy, poorly documented software.
> Not that I'm complaining too much; you get what you pay for...

Since CAP is, by and large, maintained by the people who use it, you also
get what you are prepared to put into it.  If you find something you don't
like, then change it.  Even making obscure parts of the documentation easier
to read would be a worthwhile contribution.  Don't just whine about it.

And if, by some chance, you find a bug, REPORT IT.



> CAP sucks! It is *Slow*. I'm getting much better results with ...

CAP does not suck... you have to tune it properly. If you do everything
right it happily transfers 300-450 kByte/sec over an ethernet.  In
particular running over an unbuffered BPF and without the TRELTIMEOUT
feature is calling for trouble performance wise.



> Does CAP support AppleShareIP connections via the AppleShare clients 3.7.N ?

Official support for AppleShareIP is due in patch 199. There are, however,
a number of interim patches available, one of which provides AppleShareIP
support. The interim patches are a snapshot of work in progress and appear
as and when time permits. You should keep copies of interim patches you
apply so thay they can be reversed when patch 199 is completed. There are
also extra instructions in the patch headers about files that need to be
manually removed prior to patch 199.

Interim patches are ONLY available from munnari.OZ.AU in the directory

	mac/unsupported/cap

At this time the patches are

	asip.patch	- AppleShareIP support
	cicon.patch	- Color Desktop Icon support
	extnd.patch	- Extended volume size support
	desktop.patch	- Desktop tool color  icon support

You need to apply them in that order.



> Since I updated a couple of clients to 8.1 I have the following problem.
> The share header shows the space available as "1,048,587.9 GB" until I
> copy the first after which it indicates 0k available .

OS 8.1 clients use an extended 8-byte header to get the volume size. You
need to add the extnd.patch mentioned above. This implies adding both the
asip.patch and cicon.patch.



> Is there a version of CAP available that supports Ethertalk Phase 2 ?

Phase 2 support was added in CAP 6.0 patches 25, 28, 35, 193 for SUN NIT,
ULTRIX 4.n, SUN enet driver and Solaris 2.N DLPI respectively.  This is
CAP's "Native EtherTalk" mode.

	[NB: Apple introduced EtherTalk Phase 2 around 1990. All
	Macintoshes produced in recent years, and those running
	AppleTalk drivers >= version 53 use EtherTalk Phase 2 and
	have no support for EtherTalk Phase 1].



> Can a workstation with 2 ethernet cards running CAP s/w act as a Phase 2
> to (Phase 1 or Phase 2) "Gateway"? If so, what patch level of CAP do I need
> to do this?
 
The UNIX AppleTalk Router (UAR) is an EtherTalk gateway for Phase 1 or
Phase 2.  It can handle multiple ethernet interfaces and route between
them.  This is its primary function but it can also be set up to provide
access to CAP services (even on hosts with a single ethernet interface).

UAR is not bundled with CAP, the freeware version (1.0) is available via
anonymous FTP from munnari.OZ.AU as mac/uar.tar.Z.  Please note the
redistribution restrictions indicated in the UAR README file.  A negotiable
"shareware" or site-licence fee is payable for UAR version 1.1 which has
support for ARNS clients, NBP filtering, NBP interface registrations,
AppleTalk time server and improved zone list handling.



> Does anyone have a patch that will support the phase 2 appletalk protocol
> on UAB (CAP6.0).

UAB supports Phase 1 only.  UAR is a replacement for UAB.



> When I try to start aufs, it complains that the etalk.local file
> has bogus lines "netRangeStart" and "netRangeEnd". If I remove these
> two from the file I get an "SrvrRegister Failed".

Complaints about bogus lines in etalk.local indicate that CAP was compiled
for use with EtherTalk Phase 1 but whatever produced the etalk.local file
(perhaps UAR) was using EtherTalk Phase 2 (which introduced network ranges).
If the CAP Configure script didn't even ask you about Phase 2 compatibility
then you probably have the original, unpatched version of CAP.



> I compiled UAR, configured CAP with UAR and Phase 2 support, checked the
> makefiles and run the compilation. No problem so far. I run UAR, the file
> /etc/etalkd.local looks quite right, none of the programs like 'getzones'
> or 'atlook' work (e.g. getzones gives always error -1096 getting zone list),
> as if no connection is possible.

Did you answer yes to "CAP can be setup to occupy a single directory tree" ?
If so then you need to link the file /etc/etalk.local - which UAR builds - to
cap60/etc/etalk.local which is where CAP expects to find it (since UAR is not
part of the CAP build process). You can do this with

	ln -s /etc/etalk.local cap60/etc/etalk.local

Alternately, you can edit the UAR Makefile and add an entry to the CFLAGS
line like

	-DETH_DATABASE="/mac/src/cap60/etc/etalk.local"



> Everything seems to run fine but I can't get the server to appear in the
> listing in the chooser after I select the appropriate atalk zone. The test
> program cap60/samples/atistest prints:
>   CAP distribution 6.00 using EtherTalk encapsulation, January 1991
>   abInit: [ddp:   0.00, 89] starting

There are two things to note here. The date indicates that this is the
original version of CAP 6.0 from January 1991.  The 0.00 in the abInit
line is the AppleTalk network number. The fact that it is zero indicates
that CAP was compiled for EtherTalk Phase 1.



> Is there any standard way yet of implementing a execute only, copy
> protected CAP AUFS server?

The original method of achieving this was to removing read permission from
the data fork of the Application (make it non-zero length if the file is
empty).  The current recommended method involves using the Application
Manager added in patch number 61.  Either of these methods can be
circumvented by users who are either knowledgeable or determined.



> Recently I introduced a new color postscript printer, Tektronix Phaser III
> 4698PXi, under one of the LocalTalks.  It works fine from Macintosh's so I
> tried to use it from papif but failed.

CAP uses DDP checksums by default, the checksum code in the Phaser III PXi,
Apple Personal LaserWriter NTR, QMS PS1700, Talaris 1590-T and others
incorrectly calculate the checksum value and the packet is dropped.  The
programs aufs, lwsrv, papif, atis, atlooklws and tlw now support the -k
option to disable CAP checksums on a per-program basis. To disable CAP
checksums completely, add the following lines to the m4.features file,
rerun gen.makes and remake CAP.

# + DONT_DOCHKSUM no DDP checksums (Tektronix Phaser III PXi & Apple LW NTR)
define(`specialcflags',concat(specialcflags,` -DDONT_DOCHKSUM'))
#

Some AppleTalk routers will add checksums to packets that traverse them.
This may make the -k option ineffective. To solve this problem, disable
checksums on the router. With UAR, use the -c option. With cisco routers,
use "no appletalk checksum" in the configuration. Disabling checksums,
except to make use of "broken" hardware, is not recommended.



> We've just upgraded our DECstations to version 4.2 of ULTRIX, and our CAP
> distribution very neatly broke.

You need to obtain the net_common.o and pfilt.o patches from Digital's
Customer Support (also for ULTRIX 4.2A).  Do not turn on the ifconfig
copyall (stop-gap measure previously suggested on the net).  Do not define
ULT42PFBUG in m4.features.



> Does anybody know if the packet-filter patches that were necessary
> to make CAP work under Ultrix 4.2 are built into Ultrix 4.3?

CAP under Ultrix 4.3 does not require the packet filter kernel patches.
Do not turn on the ifconfig copyall (stop-gap measure previously suggested
on the net).  Do not define ULT42PFBUG in m4.features.  See also the file
/pub/DEC/dec-faq/ultrix on gatekeeper.dec.com



> When we run aarpd with a command like:
> 	 aarpd pf0 our_zone
> the daemon doesn't start & we get the message 'failed to start ZIS listener'.

and

> After a reboot of the machine atis refuses to run properly.
> The error that I get in the logfile is:
> NIS: NIS socket not available: error -1: Address already in use

This means that some other program has chosen the ZIS UPD port 774 (768+6)
or the NBP UDP port 770 (and probably also registered with 'portmap'. Check
this with the command 'rpcinfo -p').

There are two solutions, break 'start-cap-servers' into two so that aarpd and
atis are started before the offending program. Alternatively, and preferably,
install the NIC assigned port numbers into /etc/services. See the doc in the
file cap60/doc/install.ms for more details.



> I have installed the enet driver. But aarpd won't start successfully.
> Instead the following error message is being printed.
> unix!: # aarpd le0 EtherTalk
> open: /dev/enetXX: No such file or directory

The ENET drivers use devices of the form enet0, enet1 etc. Replace the
string "le0" with "enet0".



> I tried to run aarpd, and what happened was:
> /dev/nit: Permission denied
> I also tried to do a chmod 777 /dev/nit, to no avail.

In addition to requiring the device node, /dev/nit, you have to make sure
your kernel has the NIT driver support in it.  Here's what it looks like in
the GENERIC configuration file for SunOS 4.1.1 (/sys/sun4c/conf/GENERIC):

#
# The following are for streams NIT support.  NIT is used by
# etherfind, traffic, rarpd, and ndbootd.  As a rule of thumb,
# NIT is almost always needed on a server and almost never
# needed on a diskless client.
#
pseudo-device   snit            # streams NIT
pseudo-device   pf              # packet filter
pseudo-device   nbuf            # NIT buffering module

#
# The following is for the "clone" device, used with streams devices.
# This is required if you include streams NIT support, RFS, or an audio
# device.
#
pseudo-device   clone           # clone device

If your kernel configuration doesn't have these pseudo-devices included,
add them, rebuild (config and make) your kernel, and reboot.



> I'm trying to set up CAP on a DEC Alpha running OSF/1 v3.0. All seems
> OK, but when I try to start aarpd it can't seem to find my ethernet
> interface (which I determined using netstat -i)
> open: tu0: No such file or directory

You must include packet filter support in your kernel by including the
following option in your kernel configuration file:

options		PACKETFILTER

You must then reconfigure and rebuild your kernel using the doconfig
command and create the minor device files with the MAKEDEV(8) script.
For more information see 'man packetfilter'. This also applies for ULTRIX.



> We're running CAP with Native EtherTalk on a network without a router.
> atlook doesn't show our LaserWriter IIg and getzones fails with
> error -1096 getting zone list

Zone names are the responsibility of AppleTalk routers. Without a router,
there are no zones defined for the network and the zone name field in NBP
lookup packets must be * (or nothing at all). To use CAP with Native
EtherTalk in this situation, start 'aarpd' with "*" as the zone name,
any other zone name string may cause the lookup packet to be dropped.



> We always get the message "NBPLookup returned err -1024" when doing an
> "atlook" on our Ethertalk zone.  Does anyone know what that means?

#define       nbpBuffOvr      -1024   /* buffer overflow in LookupName */

It means that atlook isn't assigning enough lookup space. That is, the
number of responses, ie: the number of NBP registered entities, exceeds 
the buffer size. In cap60/samples/atlook.c, change

#define NUMNBPENTRY 250                       /* max names we can lookup */

to something larger, perhaps 500.



> Can I use CAP with Native EtherTalk or UAB under Solaris 2.1 ?

Native EtherTalk support for Solaris 2.N was added in patch number 193.



> I am making an attempt at setting up CAP with Solaris's print system.
> Getting CAP to compile (with the 195 patches) was no big deal, but I would
> like to integrate it into the lp system.  Unfortunately Every tutorial or
> FAQ regarding this topic, that I have found, all deal with the BSD print
> system (printcap file etc.).

The script cap60/applications/papif/add_at_printer is specifically
designed for adding a CAP AppleTalk printer to a Solaris 2.N host.



> If the user would like another layout on his/hers CAP-folders than
> the standard ones, the changes are not stored by aufs. Even if the
> .ADeskTop and .IDeskTop files are deleted and rebuilt it does not
> have any effect on the layour. 

The folder layout information is not stored in the .ADesktop/.IDesktop
files - these hold icon information and application-location bindings,
but not visual-display info.  Instead, it is stored in the .finderinfo
directory.

Your problem is probably this:  the Finder layout information for the
top-level directory (the "disk window" layout) is being lost, because
CAP cannot find a place to store it.  The information is _not_ stored in
the directory that you are "publishing" on the network - instead, it's
stored in the .finderinfo directory which is located "in parallel" to
this top-level directory.  You probably have not created this
.finderinfo directory or have not set the permissions properly.

By way of example:  if you wish to publish /foo/bar/baz as a Macintosh
network disk, you should create _five_ Unix directories:

        /foo/bar/baz
        /foo/bar/baz/.resource
        /foo/bar/baz/.finderinfo
	/foo/bar/.resource
        /foo/bar/.finderinfo

The last of these is probably the one that you are missing.  You should
create it, and set its ownership and write-permissions to be identical
to those of the other four.  Then, dismount the network volume, mount
it again via the Chooser, and set the "View by" arrangement to whatever
you wish - this time it will "stick" properly.



> I had problems with the top level CAP folder losing icon positions.
> I thought I solved it by creating .finderinfo and .resource dirs in ..,
> and making everything rw for everyone, rwx for everyone but the problem
> remains ...

The Mac will not save any Finder Information unless the Volume is owned by
the connected user (so that the AFP "owner bit" is set, Inside AppleTalk,
2nd edition, page 13-88). The solution with CAP is to setuid the top-level
directory - then anyone with the appropriate UNIX permissions will be able
to save ICON positions etc.



> I wish to copy a fairly large folder (3.2MB, 227 items) from a Mac's
> local disk to an AUFS volume. When I drag the folder from the Mac to
> the AUFS volume on the desktop, the finder warns that the folder
> already exists on the destination volume (it does) and asks me whether
> to replace it. I say yes.  However, for each file, the Finder stops and
> complains that the file couldn't be copied because it couldn't be found

This sounds like "the STAT_CACHE bug", fixed in patch number 161.
Alternatively, comment out the STAT_CACHE define in m4.features, run
'gen.makes', 'make clean' and then rebuild CAP.  



> When dragging an icon to trash I get the error
> message "You can't move the object 'Empty folder' to the object
> 'Trash' () because it can't be moved to itself"

You probably don't have .resource or .finderinfo directories in the
"Network Trash Folder". From your UNIX account

	cd <AUFS volume>/"Network Trash Folder"
	mkdir .finderinfo .resource

where <AUFS volume> could be ~/mac etc.



> .ADeskTop and .IDeskTop are equivalent to Finder's Desktop file. If I
> remove these files how do I rebuild the desktop of the volume?

With System 6, you hold down the option and command keys while the volume
is being mounted. You can also rebuild your AUFS desktop files using the
builddt program available via FTP from munnari.OZ.AU as

	mac/cap.patches/capdt.1.0.shar.Z

The builddt tool was added to the CAP directory cap60/contrib/DeskTop in
patch number 190.



> Is there a CAP patch available for using the "new" LaserWriter 8.0 with
> lwsrv?

CAP patch 196 adds the necessary functionality to deal with DSC level 3
Postscript queries as used by the LaserWriter 8 drivers.  The makefile
builds two versions of LWSRV, 'lwsrv' for LaserWriter 7 and below, and
'lwsrv8' for LaserWriter 8.



> I have been trying to use aliases on a local disk that point to 
> files/folders on a Sun server running CAP 6.0. I get inconsistent
> behavior ...

CAP patch 197 adds support for both fixed directory and file IDs,
as used by the Alias Manager and other portions of the Mac OS. Refer
to the file cap60/applications/aufs/afpid.notes for more information.



> Under System 7.5, the "Find..." menu item is no longer built-in to the
> Finder; instead there's an application called "Find File" that does all
> the work.  Using it on a CAP volume generates some pretty odd behaviour;
> the Macintosh says that it found the file but then immediately complains
> that the file has "disappeared".

This is a bug in "Find File".  AUFS implements an AFP 2.1 compatible
AppleShare server.  AUFS from CAP patch levels less than 197, however, did
not support the OPTIONAL AFP 2.1 FPResolveFileID (#41) call.  When "Find
File" is returned an error (aeCallNotSupported -5024) from a FPResolveFileID()
function call, it claims that the file has disappeared.  This error does
not occur when searching for a folder.  To use the original version of
Find, which does not display this problem, use <SHIFT><COMMAND>F within
the Finder.



> There's a bug in CAP such that folders are not given the correct group
> permissions if a user is in multiple groups.

This is actually a configuration issue. In some versions of UNIX, the
getgroups(2) system call uses an array of integers to return details of
group membership, in others the array is of type "gid_t" which is normally
equivalent to "unsigned short".  To check the requirements for your system,
use the command 'man getgroups' and look for lines of the form

	int getgroups(gidsetlen, gidset)
	int gidsetlen;
	int gidset[];

or	int getgroups(int size, gid_t list[]);

and configure the appropriate array type in the m4.features file (defaults
to type 'int')

#
# + GGTYPE="gid_t" (group ID type) for AUFS
# define(`aufsosflags',concat(aufsosflags,` -DGGTYPE="gid_t"'))
#



> Why doesn't CAP work with NFS mounted filesystems ?

In some circumstances, CAP AUFS using NFS mounted filesystems may complain
about files being locked when they are not obviously so.  This is usually
the result of missing lock daemons or simply brain-dead or buggy NFS code.
The only fix is to ensure that you have the latest NFS bugfixes for your
UNIX platform.  If all else fails, you can turn off CAP's use of locking
by commenting out the lines ('#' is the comment character)

define([X_FLOCK],1)
define([X_LOCKF],1)

in the file m4.setup, then run 'gen.makes', 'make clean' and rebuild CAP.

Although CAP AUFS works fine on a correctly implemented NFS system, such
use is neither recommended or supported ...



> I need help with IPTalk.

Herewith 10 easy steps to installing CAP with IPTalk:

1. Make sure that you have the latest CAP code. If in doubt, FTP the CAP
FAQ file mac/cap.patches/CAP.faq from munnari.OZ.AU. It contains a list of
the sites where CAP is available, please choose the closest site.

2. Run the CAP Configure program, answer all of the questions with the
defaults (by hitting RETURN). Run gen.makes to create the makefiles.

3. Find out the IP address of the CAP host, say 132.45.67.89. This is a 32
bit number represented as four 8-bit quantities written as decimal numbers.
It could also be represented as a hexadecimal number, 0x842d4359. The CAP
host node number is the bottom eight bits of the IP address, written as a
decimal number, in this case 89.

4. Find out the IP address of the IPTalk compatible gateway, such as a
FastPath, GatorBox or MultiPort Gateway, say 132.45.67.90. The "bridge"
node number is the bottom eight bits of the IP address, in this case 90.

5. Check that the top 24-bits of the two IP addresses are identical, in
this case 132.45.67. For simplicity I'll call this the IP subnet number.
If they do not match you have to investigate the atalkad administration
package, or use CAP with Native EtherTalk or one of the AppleTalk routers.

6. Find out the IPTalk network number being used by the gateway. This is
a 16-bit number represented as two 8-bit quantities separated by periods
or a single decimal number. For example 93.57 is 93*256 + 57, or 23865.
Each IPTalk network number is uniquely associated with one IP subnet
number, each IPTalk installation must have a unique network number where
the IP subnets differ.

7. (optional) Check all the other network numbers in use on your network,
make sure that the IPTalk network number is not being used for LocalTalk,
EtherTalk (Phase 1 or Phase 2) or on any other IPTalk network where the
IP subnet numbers differ.

8. Find out the zone name associated with the IPTalk network number. This
may be the same as other zone names on the network but must be identical
to the zone name programmed into the IPTalk gateway. eg: unimelb-CompSci

9. Create a file called /etc/atalk.local using the template provided in
cap60/etc/atalk.local and the UNIX manual entry in cap60/man/atalk.local.5
As a minimum, the file would look like the following, using the numbers
from the examples used above, comment lines start with a '#'

# mynet         mynode          myzone
93.57		89		unimelb-CompSci
# bridgenet     bridgenode      bridgeIP
93.57		90		132.45.67.90

10. Find out what UDP ports are being used on the IP network. These are
also called the "NIC Assigned" ports. These ports map to AppleTalk socket
numbers and are used to deliver packets to the correct UNIX processes. By
default, CAP will use the ports starting at 768 so that the RTMP socket
number 1 maps to UDP port 769 and the ECHO socket 4 maps to 772. The
official port range starts at 200, so RTMP becomes 201 and ECHO becomes
204. To ensure that CAP uses the official ports, add the following entries
to the file /etc/services or the NIS database

at-rtmp         201/udp
at-nbp          202/udp
at-echo         204/udp
at-zis          206/udp

The port numbers should already be defined in the gateway configuration.

Continue testing from the [10] Verification step in cap60/doc/install.ms

Note: if you are using CAP with Native EtherTalk then ignore all but step 1.
The Native EtherTalk code is able to learn the network configuration. If
you have an /etc/atalk.local file, you should remove it. If there are no
other routers on the network, start aarpd with "*" as the zone name. The
UDP ports are also used in Native EtherTalk, as markers for sockets in use.
If a CAP process has trouble starting the ZIS listener or ECHO or NBP
sockets are unavailable, consider installing the official UDP port entries.



> I need help with CAP and UAR.

Herewith 10 easy steps to installing CAP with UAR:

1. Get the UAR package (mac/uar.tar.Z) via anonymous FTP from munnari.OZ.AU
and place it in a local directory 'uar'.  'cd uar', un-compress and un-tar
the package with 'compress -d uar.tar.Z' and 'tar -xvf uar.tar'

2. Check the README to ensure that your host is supported, currently UAR
supports Phase 1 and Phase 2 EtherTalk networks connected to SUN, DEC ULTRIX,
SGI IRIX, Sony NEWS 4.2, HP-UX and IBM RS6000 AIX workstations, and Phase 1
only on Sony NEWS pre-4.2 workstations.

3. Edit the 'Makefile' to add the necessary info to CFLAGS= and LIBS=
The requirements are listed per machine type (only NEWS, AIX & Solaris 2.N).

4. Compile the program by typing 'make'.  If compilation procedes without
error, type 'make install'. This step copies the binary to /usr/local/cap/uar

5. Decide on whether or not you are going to run UAR as a "seed router".
That is, if UAR is to be configured with details of your local AppleTalk
network or is to determine information empirically from the network.  For
UAR to function as a "seed router", you must create a uar.conf file that
contains network number(s) and zone name(s) for each of the participating
ethernet interfaces on your UAR host (see the sample uar.conf provided).
The information in uar.conf *must* be identical to the configuration in
any other AppleTalk routers on the local networks, this is not optional!
Normally your campus/institution network manager is the best source of
such information.

6. If you are absolutely certain that there are no other local AppleTalk
routers then you may choose numbers for the "network", "networklo" and
"networkhi" entries.  A "node" entry is optional.  Network numbers are
16-bit quantities and can range from 1 to 65534 (the values 65280 to
65534 are reserved as the "startup range" on Phase 2 networks, don't
assign a network number in this range).  These 16-bit numbers can also
be represented as two decimal numbers separated by a dot.  In this
notation, 56284 is represented as 219.220 (ie: 219 x 256 + 220). The
node number is an 8-bit number, the valid range is 1 - 254 on Phase 1
AppleTalk networks and 1 - 253 on Phase 2 AppleTalk networks (assume
Phase 2 for recent Macintoshes unless you know otherwise).  Node numbers
specified for UAR should be towards the high end of the range, ie: 253.
You must also choose a zone name or list of zone names for your network,
in the latter case specify one of them as the "default" zone name.  The
interface names are the device names for your ethernet interfaces and
can be listed using the command 'netstat -i'.  Under AIX, use "ent0",
"ent1" rather than the listed "en0", "en1".

7. Ensure that your CAP distribution is at least at patch level 144.
Run the Configure script and answer 'y' or 'yes' to the question
"Do you wish to use UAR (Unix AppleTalk Router) (default no) ?" and 'y'
or 'n' as necessary to "Do you want Phase 2 compatibility (no) ? "
Run 'gen.makes', 'make include' and 'make programs'.  See the CAP
documentation for more details.

8. To use UAR with CAP you must specify an interface for CAP to be
"attached" to.  With a uar.conf file, this is achieved with a "cap on"
entry, all other interfaces should have "cap off".  If no uar.conf file
exists then run UAR with a -C option.  This attaches CAP to the first
interface name listed in the UAR arguments.

9. Run UAR.  For example, on a single interface machine where UAR is used
only to support CAP (and not in it's usual function as an AppleTalk Router)
you would use

	uar -C le0

or, on a multiple interface machine

	uar -C ie1 ie0

where CAP is attached to "ie1", or with a uar.conf file

	uar et0 enp0

where "et0" and "enp0" are listed in the uar.conf file with "interface"
entries containing network and node numbers, zones and one "cap on" entry.

10. Check for "/etc/etalk.local" created by UAR.  Normally this takes up
to 15 seconds to appear (so in a start-cap-servers file insert a "sleep 20"
after starting UAR before starting the rest of the CAP programs).  With CAP
compiled for use with UAR it should now be possible to run test programs such
as 'cap60/samples/getzones' and 'cap60/samples/atlook' and see meaningful
results.  If not, consult your local network administrator or send email to
uar@munnari.OZ.AU.  Please note that UAR vers 1.0 is FreeWare. A ShareWare
or site-license fee is payable for UAR version 1.1.



CAP GLOSSARY

CAP	Columbia AppleTalk Package
	A freeware suite of programs that partially implement the AppleTalk
	protocol stack on a variety of UNIX machines.  Includes an AFP 2.0
	AppleShare Server, LaserWriter Spooler and lpr/lpd "input" filter.

ETHERTALK
	AppleTalk protocols transmitted in specific type Ethernet packets.
	May be Phase 1 (Ethernet packets type 0x809B) or Phase 2 (IEEE 802.3
	Ethernet packets with 0xAAAA03 802.2 header and 0x080007809B SNAP
	headers).  CAP in "Native EtherTalk" mode uses AppleTalk in Ethernet.
	
LOCALTALK
	AppleTalk protocols transmitted over twisted pair cable at
	230.4Kbits/second.

IPTALK	IP encapsulated AppleTalk
	AppleTalk protocols transmitted within IP packets.  Usually used with
	CAP on UNIX hosts that are unable to speak EtherTalk.  Requires an
	external AppleTalk gateway to translate IPTalk to/from EtherTalk.
	
UAB	UNIX AppleTalk Bridge
	Phase 1 EtherTalk Router.  Used to connect two EtherTalk networks
	together via Ethernet interfaces on a UNIX host.  Also supports
	CAP processes via local UDP/IP loopback using modified IPTalk.
	Bundled with CAP.

UAR	UNIX AppleTalk Router
	Phase 1/Phase 2 EtherTalk Router for UNIX boxes.  Also supports CAP
	and simple AppleTalk tunneling over IP networks.  Not bundled with
	CAP.  Available in two versions: freeware with basic features and
	shareware with extra features (supports ARNS clients, NBP registry).

AUFS	AppleTalk UNIX File Server
	UNIX based AppleShare server.  Supports Apple Filing Protocol v 2.0.
	Nominated UNIX directories can be mounted as a AppleShare Volumes
	for storage of Mac files.

LWSRV	LaserWriter Server/Spooler
	UNIX based LaserWriter Spooler.  Macintosh print jobs are spooled to
	the UNIX printer queue for subsequent printing via PAPIF or serially
	connected printer.

PAPIF	PAP Input Filter
	BSD lpd filter for sending print-jobs to AppleTalk connected
	printers.  Can be used in a script for non-BSD printing systems.

AARPD	AARP Daemon
	UNIX process for handling AppleTalk Address Resolution Protocol (AARP)
	lookups.  Stores ethernet hardware address/AppleTalk address mappings
	which are available to other CAP processes via RPC.  Also handles
	updating of /etc/etalk.local.  Used only with "Native EtherTalk".

CAPD	CAP Daemon
	UNIX process used to set up Kernel AppleTalk for Linux.

ATIS	AppleTalk Information Server
	UNIX process for handling AppleTalk Name Binding Protocol (NBP)
	lookups and registrations, AppleTalk Echo Protocol (AEP) traffic
	and Routing Table Maintenance Protocol (RTMP) data.  Sends RTMP
	router updates to AARPD via RPC.  Other CAP processes register
	Chooser visible names with ATIS.

GETZONES
	List AppleTalk zones for the local Internet.

ATLOOK	AppleTalk Lookup
	Lists AppleTalk NBP entities visible on the network.  Also ATPINGER
	for sending Echo Protocol packets and ATLOOKLWS for LaserWriters.

SNITCH	UNIX InterPoll client
	Equivalent to Macintosh "Responder" program.  Provides limited
	information about the CAP host to Mac InterPoll lookups.

AppleTalk Reference
	"Inside AppleTalk, Second Edition", Sidhu, Andrews, Oppenheimer.
	Addison-Wesley, ISBN 0-201-55021-0


For more information, see the CAP60.README file in the CAP distribution
or use a WWW browser with the URL

	http://www.cs.mu.OZ.AU/appletalk/atalk.html

Send CAP FAQ contributions to cap@munnari.OZ.AU